home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 4
/
FM Towns Free Software Collection 4 - Disc 1.iso
/
pao
/
towns
/
cdplay
/
src
/
critical.asm
< prev
next >
Wrap
Assembly Source File
|
1991-10-18
|
3KB
|
113 lines
;==============================================================================
; << 386ASM V2.0 >> for FM TOWNS
;==============================================================================
.386p
PAGE 60,132
NAME CRITICAL
TITLE CRITICAL ERROR Interrupt
;==============================================================================
; 致命的エラー処理(CTRL+Cマスク処理)
;
; CREATE : 1990.06.01
; FINISH : 1990.06.02
;
; < High C からの呼出形式 >
; extern INT24_mask() ;
; INT24_mask() ;
;
; < note > : TABS = 4
;
; < History >
; 1990.06.01 : CREATE
; 1991.06.07 : 清書
;
; Programmed by Y.Hirata ( Nifty-ID : NAB03321 )
;==============================================================================
;
INCLUDE hc.inc ;
;
CGROUP GROUP pmcode, CODE ;
;
;--------------------------------------------
public INT24_mask ; 致命的エラー割り込み登録
;--------------------------------------------
;
DOSERROR_IGNORE EQU 0 ; 無視
DOSERROR_RETRY EQU 1 ; 再試行
DOSERROR_ABORT EQU 2 ; プログラム中止
DOSERROR_FAIL EQU 3 ; ファンクションコール失敗
;
;////////////////////////////////////////////
; ネイティブ部
;////////////////////////////////////////////
;
;********************************************
; 致命的エラーハンドラ/ネイティブ処理
;********************************************
;
pmcode SEGMENT ;
ASSUME cs:CGROUP ;
;
;--------------------------------------------
; 致命的エラーネイティブハンドラ
;--------------------------------------------
ALIGN 4 ; dword boundary
INT24_hook PROC FAR ;
cli ;
mov al,DOSERROR_FAIL ; ファンクションコール失敗としてリターン
iretd ; 割り込み復帰
INT24_hook ENDP ;
;
;--------------------------------------------
; CTRL+C ネイティブハンドラ
;--------------------------------------------
ALIGN 4 ; dword boundary
INT23_hook PROC FAR ;
iretd ;
INT23_hook ENDP ;
;
;--------------------------------------------
; 致命的エラー割り込み登録
;--------------------------------------------
ALIGN 4 ; dword boundary
INT24_mask PROC NEAR ;
push ebp ;
mov ebp,esp ; スタックフレーム形成
;
push ds ;
push es ;
push edx ;
push ecx ;
;
push cs ;
pop ds ; ds = cs
;
cli ;
lea edx,INT23_hook ;
mov cl,23h ; CTRL+Cの割り込み番号
mov ax,2506h ; ネイティブハンドラの登録
sti ;
int INT_DOS ;
;
cli ;
lea edx,INT24_hook ;
mov cl,24h ; 致命的エラーの割り込み番号
mov ax,2506h ; ネイティブハンドラの登録
sti ;
int INT_DOS ;
;
pop ecx ;
pop edx ;
pop es ;
pop ds ;
xor eax,eax ; return code = 0
;
pop ebp ; スタックフレーム開放
ret ;
INT24_mask ENDP ;
;
pmcode ENDS ;
;
END